package com.sanbi.erp.db.domain;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
    * 货品表
    */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Product implements Serializable{
    private Integer id;

    /**
    * 库存sku（商品sku）
    */
    @ExcelProperty(value = "商品sku")
    private String productSku;

    /**
    * 中文名称
    */
    @ExcelProperty(value = "中文名称")
    private String productNameCn;

    /**
    * 英文名称
    */
    @ExcelProperty(value = "英文名称")
    private String productNameEn;

    /**
    * 商品状态（1 正常销售，2 停止销售，3 清仓）
    */
    @ExcelProperty(value = "商品状态")
    private Integer productState;

    /**
     * 组合商品标识（0 不是 1 是）
     */
    private Boolean productIsGroup;

    /**
    * 货品类目_id
    */
    @ExcelProperty(value = "商品类目")
    private Integer categoryId;

    // 类目名称
    private String categoryName;

    /**
    * 供应商_id
    */
    @ExcelProperty(value = "供应商名称")
    private Integer providerId;

    // 供应商名称
    private String providerName;
    // 供应商地址
    private String providerLocation;
    // 供应商来源url
    private String providerSourceUrls;

    /**
    * 长（cm）
    */
    @ExcelProperty(value = "长（cm）")
    private BigDecimal length;

    /**
    * 宽（cm）
    */
    @ExcelProperty(value = "宽（cm）")
    private BigDecimal width;

    /**
    * 高（cm）
    */
    @ExcelProperty(value = "高（cm）")
    private BigDecimal height;

    /**
    * 体积（cm³）
    */
    @ExcelIgnore
    private BigDecimal cubage;

    /**
    * 体积重(kg)
    */
    @ExcelProperty(value = "体积重")
    private BigDecimal cubageWeight;

    /**
    * 商品实际重量(kg)
    */
    @ExcelProperty(value = "商品重量（kg）")
    private BigDecimal productWeight;

    /**
    * 箱规（每箱的数量）
    */
    @ExcelProperty(value = "箱规")
    private Integer boxNumber;

    /**
    * 采购价
    */
    @ExcelProperty(value = "采购价")
    private BigDecimal purchasePrice;

    /**
    * 缩略图片，采用JSON数组格式
    */
    @ExcelProperty(value = "缩略图")
    private String pictures;

    /**
    * 商品简介说明
    */
    @ExcelProperty(value = "商品属性说明")
    private String productDesc;

    /**
    * 报关中文名称
    */
    @ExcelProperty(value = "报关中文")
    private String customsClearanceNameCn;

    /**
    * 报关英文名称
    */
    @ExcelProperty(value = "报关英文")
    private String customsClearanceNameEn;

    /**
    * 报关价格
    */
    @ExcelProperty(value = "报关价格")
    private BigDecimal customsClearancePrice;

    /**
    * 报关重量
    */
    @ExcelProperty(value = "报关重量")
    private BigDecimal customsClearanceWeight;

    /**
    * 材质
    */
    @ExcelProperty(value = "材质")
    private String customsClearanceTexture;

    /**
    * 用途
    */
    @ExcelProperty(value = "用途")
    private String customsClearanceUse;

    /**
    * 海关编码
    */
    @ExcelProperty(value = "海关编码")
    private String customsClearanceSn;

    /**
    * 危险运输品：（0 无 1 含电 2 纯电 3 液体 4 粉末 5 膏体 6 带磁 7 含非液体化妆品）
    */
    @ExcelProperty(value = "危险运输")
    private Integer customsClearanceRisky;

    /**
    * 创建时间
    */
    @ExcelIgnore // Excel表格导入数据时不匹配此字段
    private LocalDateTime addTime;

    /**
    * 更新时间
    */
    @ExcelIgnore
    private LocalDateTime updateTime;

    /**
    * 逻辑删除
    */
    @ExcelIgnore
    private Boolean deleted;


    // 对应的店铺货品信息（这个货品在那个店铺售卖）
    @ExcelIgnore
    private StoreProduct[] storeProduct;
//    private List<StoreProduct> storeProduct;

    // 店铺商品信息
    private List<StoreProduct> storeProductList;

    // 组合商品表（用于添加组合商品信息/查询映射）
    private List<ProductGroup> productGroupList;

}